Python import 与

您所在的位置:网站首页 python import this Python import 与

Python import 与

#Python import 与 | 来源: 网络整理| 查看: 265

import module

使用from import *导入模块时,若显式定义了__all__,则只导入__all__中的name,否则会导入除以下划线开头的所有name

文件目录结构

|---main.py |---module.py

定义module文件:

# __all__ in a module, means that when you import * from the module, only those names in the __all__ will imported __all__ = ['hello', 'Person', '__private'] ​ _internal = 'internal' ​ __private = 'private' ​ ​ class Person(): def __init__(self): print('init person') ​ ​ def hello(): print('hello') ​ ​ def world(): print('world')

导入模块:

import module ​ module.Person() module.hello() # 可以访问以下划线开头的name print(module._internal) module.world() ​ # ====================================== ​ from module import * ​ Person() hello() print(__private) ​ # NameError: name 'world' is not defined # world() ​ # NameError: name '_internal' is not defined print(_internal)import package

package中的__init__.py文件会影响到包文件的导入

文件目录结构

|---main.py |---packages |---__init__.py |---pkg.py__init__.py为空,main.py:import packages.pkg as ppkg ​ ppkg.Package() ppkg._internal ​ # ============================================= ​ from packages import pkg ​ pkg.Package() ​ # ============================================= ​ # 不会导入任何name from packages import *__init__.py中指定模块name

__init__.py

__all__ = ['pkg']

main.py:

import packages.pkg as ppkg ​ ppkg.Package() ppkg._internal ​ # ============================================= ​ from packages import * ​ pkg.Package() pkg._internal__init__.py中导出模块中的部分名称

__init__.py:

from pkg import * ​ __all__ = ['Package', 'init']

main.py

import packages as pg ​ pg.Package() ​ # ============================================ ​ from packages import Package ​ Package() ​ # ============================================= ​ from packages import pkg ​ # AttributeError: 'function' object has no attribute 'Package' # pkg.Package() ​ # ============================================= ​ from packages import * ​ Package() init() # name 'pkg' is not defined # pkg.Package() # pkg._internal

对于package的导入,若__init__.py不为空,则只能导入__init__.py中指定的模块(中的)name; __init__.py为空时,通过from package import *无法导入任何name;



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3